//package com.travel.travelServer.service1.impl;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.github.pagehelper.PageHelper;
//import com.github.pagehelper.PageInfo;
//import com.travel.travelServer.entity1.Collect;
//import com.travel.travelServer.entity1.Comment;
//import com.travel.travelServer.entity1.Landscapes;
//import com.travel.travelServer.entity1.User;
//import com.travel.travelServer.entity1.vo.CollectVo;
//import com.travel.travelServer.entity1.vo.CommentVo;
//import com.travel.travelServer.entity1.vo.LandscapesVo;
//import com.travel.travelServer.mapper1.CollectMapper;
//import com.travel.travelServer.mapper1.CommentMapper;
//import com.travel.travelServer.mapper1.LandscapesMapper;
//import com.travel.travelServer.mapper1.UserMapper;
//import com.travel.travelServer.service1.CollectService;
//import com.travel.travelServer.utils.BaseService;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.Date;
//import java.util.List;
//
//@Service
//public class CollectServiceImpl extends BaseService<CollectMapper, Collect> implements CollectService {
//
//    @Autowired
//    CollectMapper collectMapper;
//
//    @Autowired
//    LandscapesMapper landscapesMapper;
//
//    @Autowired
//    CommentMapper commentMapper;
//
//    @Autowired
//    UserMapper userMapper;
//
//    /**
//     * 新增Collect
//     *
//     * @param collectVo
//     * @return 结果
//     */
//    @Transactional(rollbackFor = Exception.class)
//    @Override
//    public int insertCollect(CollectVo collectVo) {
//        Date date = new Date();
//        collectVo.setCreateTime(date);
//        collectVo.setUpdateTime(date);
//        collectVo.setCreateBy("admin");
//        collectVo.setUpdateBy("admin");
//        collectMapper.insert(collectVo);
//        return 1;
//    }
//
//    /**
//     * 单个删除Collect信息
//     *
//     * @param id-主键
//     * @return 结果
//     */
//    @Transactional(rollbackFor = Exception.class)
//    @Override
//    public int deleteById(Long id) {
//        return collectMapper.deleteById(id);
//    }
//
//    /**
//     * 批量删除Collect信息
//     *
//     * @param ids-主键[]
//     * @return 结果
//     */
//    @Transactional(rollbackFor = Exception.class)
//    @Override
//    public int deleteByIds(Long[] ids) {
//        return collectMapper.deleteBatchIds(Arrays.asList(ids));
//    }
//
//    /**
//     * 修改Collect
//     *
//     * @param collectVo
//     * @return 结果
//     */
//    @Transactional(rollbackFor = Exception.class)
//    @Override
//    public int updateCollect(CollectVo collectVo) {
//        collectMapper.updateById(collectVo);
////        LambdaQueryWrapper<CollectMenu> wrapper = new LambdaQueryWrapper<>();
////        wrapper.eq(CollectMenu::getCollectId, collectVo.getId());
////        collectMenuMapper.delete(wrapper);
////        List<Long> menuIds = collectVo.getMenuIds();
////        if (menuIds.size() > 0){
////            for (Long menuId : menuIds) {
////                CollectMenu collectMenu = new CollectMenu();
////                collectMenu.setCollectId(collectVo.getId());
////                collectMenu.setMenuId(menuId);
////                collectMenuMapper.insert(collectMenu);
////            }
////        }
//        return 1;
//    }
//
//    /**
//     * 查询Collect
//     *
//     * @param id-主键
//     * @return collect
//     */
//    @Override
//    public Collect selectById(Long id) {
//        return collectMapper.selectById(id);
//    }
//
//    /**
//     * 查询Collect列表
//     *
//     * @param collectVo
//     * @return Collect集合
//     */
//    @Override
//    public List<Collect> selectCollectList(CollectVo collectVo) {
//        LambdaQueryWrapper<Collect> queryWrapper = new LambdaQueryWrapper<>();
//        //queryWrapper.eq(Collect::getId, collectVo.getId).select(Collect::getId);
//        return collectMapper.selectList(queryWrapper);
//    }
//
//    @Override
//    public PageInfo<Collect> getInfoPage(CollectVo collectVo) {
//        // 使用 PageHelper 分页
//        PageHelper.startPage(collectVo.getPageNum(), collectVo.getPageSize());
//        LambdaQueryWrapper<Collect> wrapper = new LambdaQueryWrapper<>();
//        List<Collect> collects = collectMapper.selectList(wrapper);
//        return new PageInfo<>(collects);
//    }
//
//    @Override
//    public Boolean isCollentLandscapes(CollectVo collectVo) {
//        if (collectVo.getIsCollect()){
//            Date date = new Date();
//            collectVo.setCreateTime(date);
//            collectVo.setUpdateTime(date);
//            collectVo.setCreateBy("admin");
//            collectVo.setUpdateBy("admin");
//            collectVo.setUserId(getCurrentUser().getId());
//            collectMapper.insert(collectVo);
//        }else {
//            LambdaQueryWrapper<Collect> wrapper = new LambdaQueryWrapper<>();
//            wrapper.eq(Collect::getUserId, getCurrentUser().getId());
//            wrapper.eq(Collect::getLandscapesId, collectVo.getLandscapesId());
//            collectMapper.delete(wrapper);
//        }
//        return true;
//    }
//
//    @Override
//    public List<LandscapesVo> getMyCollect(Long id) {
//        LambdaQueryWrapper<Collect> wrapper = new LambdaQueryWrapper<>();
//        wrapper.eq(Collect::getUserId, id);
//        List<Collect> collects = collectMapper.selectList(wrapper);
//        List<LandscapesVo> landscapesVos = new ArrayList<>();
//        for (Collect collect : collects) {
//            Landscapes landscapes = landscapesMapper.selectById(collect.getLandscapesId());
//            LambdaQueryWrapper<Comment> queryWrapper = new LambdaQueryWrapper<>();
//            queryWrapper.eq(Comment::getLandscapesId, landscapes.getId());
//            List<Comment> comments = commentMapper.selectList(queryWrapper);
//            List<CommentVo> commentVos = new ArrayList<>();
//            for (Comment comment : comments) {
//                CommentVo commentVo = new CommentVo();
//                BeanUtils.copyProperties(comment, commentVo);
//                User user = userMapper.selectById(comment.getUserId());
//                commentVo.setUser(user);
//                commentVos.add(commentVo);
//            }
//            landscapes.setCommentVos(commentVos);
//            LandscapesVo landscapesVo = new LandscapesVo();
//            BeanUtils.copyProperties(landscapes, landscapesVo);
//            landscapesVos.add(landscapesVo);
//        }
//        return landscapesVos;
//    }
//
//}
